{
  const num = 1
  const config = {
    [num]: {
      title: 'i am a title',
      value: [1, 2]
    }
  }
  console.log(config[num]) // 输出正确结果
  console.log(config[1]) // 输出正确结果
  // console.log(config.1) // 报错
}

{
  const set = new Set()
  const map = new Map()
  console.log('set', typeof set) // object
  console.log('map', typeof map) // object
}

{
  // map构造函数接受数组作为参数,实际上执行的是下面的算法
  const items = [
    ['name', '张三'],
    ['title', 'Author']
  ]
  const map = new Map()
  items.forEach(([key, value]) => {
    map.set(key, value)
  })
  console.log('map', map) // Map { 'name' => '张三', 'title' => 'Author' }
  console.log(map.has('name')) // true
  console.log(map.get('name')) // 张三
}

{
  const set = new Set([['foo', 1], ['bar', 2]])
  const m1 = new Map(set)
  console.log(m1.get('foo')) // 1
  const m2 = new Map([['baz', 3]])
  const m3 = new Map(m2)
  console.log(m3.get('baz')) // 3
}

{
  const map = new Map()
  map.set(1, 'aaa')
    .set(1, 'bbb')
  console.log(map.get(1)) // bbb
}

{
  const map = new Map()
  const k1 = ['a']
  const k2 = ['a']
  map.set(k1, 111)
  map.set(k2, 222)
  console.log(map.get(k1)) // 111
  console.log(map.get(k2)) // 222
}

{
  let map = new Map()
  map.set(-0, 123)
  console.log(map.get(+0)) // 123
  map.set(true, 1)
  console.log(map.get(true)) // 1
  map.set(undefined, 3)
  map.set(null, 4)
  console.log(map.get(undefined)) // 3
  map.set(NaN, 123)
  console.log(map.get(NaN)) // 123
}
